In typical database systems, users write, update and retrieve information by submitting commands to a database application. To be correctly processed, the commands must comply with the database language that is supported by the database application. One popular database language is known as Structured Query Language (“SQL”).
Operations that modify data stored in a database are referred to as manipulation operations. The subset of commands that specify manipulation operations are referred to as Data Manipulation Language (“DML”) commands. Examples of DML commands in SQL include Insert, Update, and Delete. Manipulation operations are also referred to herein as DML operations, because typically manipulation operations are performed by a database system in response to receiving DML commands.
Many database systems are multi-processing systems. Multi-processing systems are typically partitioned into nodes, where each node may contain multiple processors executing multiple concurrent processes. To fully utilize the computing power of a multi-processing system, a database system may divide a large processing task (“parent task”) into smaller work granules, which may then be distributed to processes running on one or more processing nodes. Because the various work granules are being performed in parallel, the processing required by the query can be completed much faster than if the processing were performed on a single node by a single process. The number of processes that are assigned to perform a task is referred to as the degree of parallelism. In general, a task may be performed more efficiently by increasing the degree of parallelism, at least up to a particular threshold. Unfortunately, the degree of parallelism that may be achieved for DML operations is limited because the process of dividing DML operations into work granules is affected by how work granules are processed as transactions and how data is stored in database systems.